package cn.tedu.a3dalbum;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewSwitcher;

import java.util.ArrayList;

import it.moondroid.coverflow.components.ui.containers.FeatureCoverFlow;
/**
 * 创建日期：2021/06/10 19:48
 * @author Qiu
 * @version 1.0
 * 文件名称： MainActivity.java
 * 类说明：
 */


public class MainActivity extends AppCompatActivity {

    private FeatureCoverFlow coverFlow;

    private AlbumAdapter adapter;

    private ArrayList<AlbumBean> dataList;
    /*
        可用于为屏幕上的标签设置动画。
        每当调用setText(CharSequence) ，
        TextSwitcher 都会将当前文本动画化，并将新文本动画化
     */
    private TextSwitcher mTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 创建界面所需要的图片数据
         */
        initData();
        /**
         * 初始化界面控件
         */
        initView();
    }

    private void initView() {
        //标题
        mTitle = (TextSwitcher)findViewById(R.id.ts);
        //设置用于创建 ViewSwitcher 将在其间翻转的两个视图的工厂方法
        // 一个 ViewSwitcher 只能有两个子视图，一次只显示一个。
        mTitle.setFactory(new ViewSwitcher.ViewFactory() {//在 ViewSwitcher 中创建视图
            //创建要添加到ViewSwitcher的新View
            @Override
            public View makeView() {
                //从给定的activity中获取 LayoutInflater
                LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
                //加载标题
                TextView title = (TextView) inflater.inflate(R.layout.item_title, null);
                return title;
            }
        });
        //Animation：可应用于视图、表面或其他对象的动画的抽象
        //AnimationUtils：定义用于处理动画的常用实用程序
        //loadAnimation：从资源加载Animation对象
        Animation in = AnimationUtils.loadAnimation(this, R.anim.slide_in_top);
        Animation out = AnimationUtils.loadAnimation(this, R.anim.slide_out_bottom);
        //指定用于动画进入屏幕的视图的动画
        mTitle.setInAnimation(in);
        //指定用于动画进入屏幕的视图的动画
        mTitle.setOutAnimation(out);

        coverFlow = (FeatureCoverFlow) findViewById(R.id.fcf);
        adapter = new AlbumAdapter(this);
        adapter.setDataList(dataList);
        coverFlow.setAdapter(adapter);
        //单击此 AdapterView 中的项目时调用
        coverFlow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            /*
                parent – 发生点击的 AdapterView。
                view – AdapterView 中被点击的视图（这将是适配器提供的视图）
                position – 视图在适配器中的位置。
                id – 单击的项目的行 id。
             */
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (position < dataList.size()) {
                    Toast.makeText(MainActivity.this,
                            getResources().getString(dataList.get(position).titleResId),
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
        //设置滚动位置侦听器
        coverFlow.setOnScrollPositionListener(new FeatureCoverFlow.OnScrollPositionListener() {
            @Override
            public void onScrolledToPosition(int position) {
                mTitle.setText(getResources().getString(dataList.get(position).titleResId));
            }
            //滚动时，清空文本
            @Override
            public void onScrolling() {
                mTitle.setText("");
            }
        });

    }

    private void initData() {
        dataList = new ArrayList<>();
        dataList.add(new AlbumBean(R.drawable.img_1, R.string.title1));
        dataList.add(new AlbumBean(R.drawable.img_2, R.string.title2));
        dataList.add(new AlbumBean(R.drawable.img_3, R.string.title3));
        dataList.add(new AlbumBean(R.drawable.img_4, R.string.title4));
        dataList.add(new AlbumBean(R.drawable.img_5, R.string.title5));
    }
    //记录第一次点击时的时间
    protected long exitTime;
    //判读是否按下退出按键
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //后退键并已经按下
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getAction() == KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(MainActivity.this, "再按一次退出3D相册",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                MainActivity.this.finish();
                System.exit(0);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}